#pragma once
#include "TimeSys.h"
#include "ReadN.h"
#include "ReadO.h"
#include "GNSSSatPos.h"
#include "CoordSys.h"

class SinglePointPositioning {
private:
    TimeSys* timeSys_;
    ReadN* readN_;
    ReadO* readO_;
    GNSSSatPos* satPos_;
    CoordSys* coordSys_;
public:
    SinglePointPositioning(TimeSys* timeSys, ReadN* readN, ReadO* readO, GNSSSatPos* satPos, CoordSys* coordSys);
    ~SinglePointPositioning();
    std::vector<double> calculatePseudoRanges(const obsEpoch& epoch);
    XYZ solveReceiverPosition(const std::vector<XYZ>& satPositions, const std::vector<double>& pseudoRanges);
    bool performPseudoRangeSinglePointPositioning();
    void testSinglePointPositioning();
};